<?php
#phpmailer版本6.5.3 thinkphp 5.0.24
#邮箱发送封装类 不应该包含db类
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
#授权码 tigklvudaaysdjhg
require("PHPMailer/src/PHPMailer.php");
require("PHPMailer/src/SMTP.php");
require("PHPMailer/src/Exception.php");
class Email
{
    #附加信息 
    var $extra_title;#任务标题
    var $extra_body;
    #邮箱验证码
    var $php_code;
    #发件人信息
    var $sender_data = array
    (
        'email'=> "2439905184@qq.com",
        'name'=> "创艺",
        'token'=> "tigklvudaaysdjhg",
    );
    #收件人信息
    /**
     * @param string email 收件人邮箱
     * @param string name  收件人名称（可任意指定）
     */
    var $to_data = array
    (
        "email"=>"",
        "name"=>"",
    );
    /**
     * @param int $type 邮件类型 
     */
    var $type;
    var $verify = 1;//注册验证类型
    var $check  = 2;//审核类型
    //设置邮件类型
    /**
     * @method set_type 设置邮件类型
     * @param int $p_type 邮件类型
     */
    function set_type($p_type)
    {
        $this->type = $p_type;
    }
    //返回值
    var $respone_body = array
    (
        'code'  =>false,
        'msg'   =>"",
        'debug' =>"",
        'error' =>"",
    );
    /**
     * @param string $from 发送者邮件，为空则为默认我的qq邮箱账号
     * @param string $body 邮件信息体
     * @param string $title 邮件标题
     */
    function send($from)//,$body,$title)
    {
        #基础配置
        $mail = new PHPMailer(true);
        $mail->isSMTP();
        $mail->CharSet = "utf8";
        $mail->Host = "smtp.qq.com";
        $mail->SMTPSecure = "ssl";
        $mail->SMTPAuth = true;
        $mail->Port = 465;//  qq端口465或587）
        $mail->isHTML(true);
        if($from == null)
        {
            $mail->Username = $this->sender_data['email'];
            $mail->Password = $this->sender_data['token'];#客户端授权密码,而不是邮箱的登录密码！
            $mail->setFrom($this->sender_data['email'],$this->sender_data['name']); #设置发件人信息，如邮件格式说明中的发件人，
            $mail->addAddress($this->to_data['email'],$this->to_data['name']);#设置收件人信息，如邮件格式说明中的收件人，
            $mail->addReplyTo($this->sender_data['email'], $this->sender_data['name']);# 设置回复人信息，指的是收件人收到邮件后，如果要回复，回复邮件将发送到的邮箱地址
        }
        if($this->type == $this->verify )
        {
            $mail->Subject = "学生技术赚钱社区-账号验证邮件";
            #todo 随机生成有时密码位数不对 以后换新的写法
            $verify_str    = "<b style='color:red'>".$this->php_code."</b>,";
            $mail->Body    =  "验证码5分钟内有效：".$verify_str."请将它写入网站注册窗口\n欢迎使用学生技能知识付费-赚钱外包平台，如果非本人操作无需理会！";
        }
        else if($this->type == $this->check)
        {
            $mail->Subject = "学生技术赚钱社区-审核通知";
            $html          = "<h3 style='color:red'>".$this->extra_title."</h3>";
            $mail->Body    = "你的任务".$html.$this->extra_body;
        }
        if(!$mail->Send()) 
        {
            $this->respone_body['code']  = false;
            $this->respone_body['msg']   = "邮件发送失败";
            $this->respone_body['debug'] = "邮件类型：".$this->type.$this->to_data.$this->sernder_data;
            $this->respone_body['error'] = $mail->ErrorInfo;
            echo json_encode($this->respone_body);
        } else {
            $this->respone_body['code'] = true;
            $this->respone_body['msg']  = "邮件发送成功";
            $this->respone_body['debug'] = "邮件类型：".$this->type.$this->to_data.$this->sernder_data;
            echo json_encode($this->respone_body);
        }
    }
}
//使用json重构数据
/*
$json = json_decode($_POST['json']);
#var_dump($json);
//发件人邮箱
$sender_email = '2439905184@qq.com'; 
#审核行为
if($json->action == "check")
{
    $mail = new PHPMailer(true);
    $email= $account;//获取收件人邮箱
    $mail->isSMTP();
    $mail->CharSet = "utf8";// 编码格式为utf8，不设置编码的话，中文会出现乱码
    $mail->Host = "smtp.qq.com";// 发送方的SMTP服务器地址
    $mail->SMTPAuth = true;// 是否使用身份验证

    #客户端授权密码,而不是邮箱的登录密码
    $sender_token = "tigklvudaaysdjhg";
    $sender_name = '创艺';// 设置发件人信息，如邮件格式说明中的发件人，
    $to_name = '用户';//设置收件人信息，如邮件格式说明中的收件人
    #设置phpMailer发送方参数
    $mail->Username = $sender_email;
    $mail->Password = $sender_token;//客户端授权密码,而不是邮箱的登录密码！
    $mail->SMTPSecure = "ssl";// 使用ssl协议方式
    $mail->Port = 465;//  qq端口465或587）
    $mail->isHTML(true);
    $mail->setFrom($sender_email, $sender_name);// 设置发件人信息，如邮件格式说明中的发件人，
    $mail->addAddress($json->email, $to_name);// 设置收件人信息，如邮件格式说明中的收件人，
    $mail->addReplyTo($sender_email, $sender_name);// 设置回复人信息，指的是收件人收到邮件后，如果要回复，回复邮件将发送到的邮箱地址
    $mail->Subject = "学生技术赚钱社区";// 邮件标题
    if($json->passed)
    {
        $mail->Body = "你的任务"."<h1 style='color:red'>".$json->title."</h1>"."已通过审核，如非本人操作，请忽略。";
    }
    else
    {
        $mail->Body = "你的任务"."<h1 style='color:red'>".$json->title."</h1>"."未通过审核，请前往修改。如非本人操作，请忽略。";
    }
}
else if($json->action == "reg")
{

}*/
?>